home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / qtools.arc / QCP208.ARC / QCP.DOC < prev    next >
Text File  |  1990-08-24  |  86KB  |  1,947 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.                  QCP  --  QEdit Compiler Program
  10.  
  11.  
  12.             A program to ease invocation of compilers
  13.          and other software tools from a function key in 
  14.                          QEdit version 2
  15.  
  16.  
  17.                        Author: Tim Farley
  18.                          Revision: 2.08 
  19.                     Date:  November 17th, 1989
  20.  
  21.              QCP is FREE to licensed users of QEdit
  22.             QCP is Copyright (C) 1989, by Tim Farley
  23.  
  24.  
  25.      QEdit and QMac are Copyright (C) 1985-1989 by SemWare.
  26.  
  27.  
  28. DESCRIPTION
  29. -----------
  30. QCP is a program to run compilers & other utilities from within 
  31. QEdit 2.08+.  You hit a function key in QEdit, QCP decides which 
  32. program to run based on the name of the file you are editing, 
  33. runs it, and then "reads" the error messages from the compiler to 
  34. tell QEdit how to jump to the errors in your source code.
  35.  
  36. QCP can also be used to provide a regular expression search 
  37. capability to QEdit in the same way--simply by running an 
  38. external GREP program, and "reading" its output.
  39.  
  40. QCP can also be used from the command line or within a batch 
  41. file, separate from QEdit, to provide a single front-end to 
  42. several different compilers or utilities.
  43.  
  44. QCP can interface in the same manner to any external utility that 
  45. generates redirectable output containing "line numbers" that 
  46. refer to your original source file.
  47.  
  48. QCP 2.08 requires the use of QEdit 2.08 or higher.
  49.  
  50. In addition, to take full advantage of QCP, you will want to have 
  51. a copy of QMAC that is compatible with your copy of QEdit.  If 
  52. you are a registered user of QEdit, then QMAC should be found on 
  53. the Program Diskette that you received from SemWare.
  54.  
  55.  
  56. QCP 2.08 Documentation                                    Page 2
  57.  
  58.  
  59. TABLE OF CONTENTS
  60. -----------------
  61. Description ................................................   1
  62. Table Of Contents ..........................................   2
  63. File List ..................................................   3
  64. License ....................................................   4
  65. Quick Installation .........................................   4
  66. Quick Start ................................................   6
  67. Running QCP ................................................   6
  68. Command Line Switches and QCP ..............................   8
  69.      /R -- Read Config Info from Disk ......................   9
  70.      /C -- Configure QCP.EXE's Defaults ....................   9
  71.      /S -- Show QCP.EXE's Current Defaults .................  10
  72.      /G -- Guessing of File Extension ......................  10
  73.      /Q -- QEdit Macro Creation ............................  10
  74.      /B -- Batch Mode Operation ............................  10
  75.      /W -- Write New Error Output File .....................  11
  76.      /P -- Pause After Error ...............................  11
  77.      /I -- Insertion Character .............................  12
  78.      /O -- Output File Name ................................  12
  79.      /M -- Macro File Name .................................  12
  80.      /1 to /9 -- Custom File Extensions ....................  13
  81.      file -- File to Compile ...............................  13
  82.      options -- Compiler Options ...........................  13
  83. QEdit Macro Key Customization ..............................  14
  84. Compiler Compatibility .....................................  15
  85.      Custom Compiler Configurations ........................  15
  86.      Compatible Compilers ..................................  16
  87.      I/O Redirection Problems, Tips ........................  18
  88.           Microsoft Fortran 3.x ............................  19
  89.           Microsoft MASM 4.0 ...............................  20
  90.           DBFAST 1.03 ......................................  20
  91.           Norton Guides Database Compiler 1.04 .............  21
  92.           Microsoft Quick Pascal 1.00 ......................  21
  93.      Incompatible Compilers ................................  22
  94. Configuration Via QCP.DAT ..................................  22
  95.      Substitution Strings ..................................  24
  96.           $F -- Full Filename ..............................  24
  97.           $D -- Drive Letter ...............................  24
  98.           $P -- Path (Directory) of File ...................  24
  99.           $N -- Name of File ...............................  24
  100.           $E -- Extension of File ..........................  24
  101.           $1 to $9 -- Compiler Options .....................  25
  102.           $$ -- Single Dollar Sign .........................  25
  103.           $T -- Temp File Name .............................  25
  104.           $O -- Output File Name ...........................  25
  105.           $M -- Macro File Name ............................  25
  106.           $K -- Macro Key Number ...........................  25
  107.           $S -- Source Line Number .........................  26
  108.           $C -- Source Column Number .......................  26
  109.  
  110.  
  111. QCP 2.08 Documentation                                    Page 3
  112.  
  113.  
  114.           $R -- Result Line Number .........................  26
  115.           $I -- Inserted Character .........................  26
  116.           $U -- Unique String ..............................  26
  117.           $L -- Lead-in String .............................  27
  118.      QCP Configuration Commands ............................  27
  119.           ..T -- Temp File Name ............................  27
  120.           ..O -- Output File Name ..........................  28
  121.           ..M -- Macro File Name ...........................  28
  122.           ..C -- QMac Command Line .........................  28
  123.           ..Q -- QEdit Macro Template ......................  29
  124.           ..1 to ..9 -- Special File "Extensions" ..........  30
  125.           ..B -- Batch Mode Startup Macro Template .........  31
  126.           ..G -- Guess Extension ...........................  32
  127.           ..W -- Rewrite Error File ........................  32
  128.           ..I -- Insertion Character .......................  32
  129.           ..N -- Next Error Macro Template .................  33
  130.           ..P -- Previous Error Macro Template .............  33
  131. Summary of Command Line Switches ...........................  34
  132. Summary of Substitution Strings ............................  34
  133. Summary of Configuration Commands ..........................  35
  134. Error Messages .............................................  35
  135. Informative & Warning Messages .............................  37
  136. Acknowledgements & Contacts ................................  38
  137. Revision History ...........................................  39
  138.  
  139.  
  140. FILE LIST
  141. ---------
  142. The following files are included in this package:
  143.  
  144.      QCP-READ.ME    - quick notes on this update.
  145.      QCP.DOC        - this documentation file
  146.      QCP.EXE        - the QCP program
  147.      QCPSMALL.EXE   - another version of QCP with /R and /C
  148.                       disabled.  For those worried
  149.                       about disk and RAM usage.
  150.      QCP.DAT        - the configuration data file
  151.      QCONFIG.QCP    - partial QEdit keyboard file containing 
  152.                       sample macros for use with QCP
  153.      COMPILE.BAT    - example of using QCP outside QEdit
  154.  
  155. NOTE:  Changes in this manual from the last version, 2.0, are       |
  156. notated in the right margin with a "|" character.                   |
  157.  
  158.  
  159. QCP 2.08 Documentation                                    Page 4
  160.  
  161.  
  162. LICENSE
  163. -------
  164. QCP is FREE to licensed users of QEdit.
  165.  
  166. You may copy QCP for purposes of evaluating it, and distribute 
  167. QCP to others for purposes of evaluating it for their use.  If 
  168. you continue to use QCP after evaluating it, you must register 
  169. your copy of QEdit.  See your QEdit documentation for 
  170. registration information.
  171.  
  172. If you distribute QCP to others, you must distribute it AS-IS, 
  173. with no files altered, added, or removed from the package.  You 
  174. may not distribute QCP in connection with any other product or 
  175. service, or for any consideration or 'disk fee'.
  176.  
  177. Operators of electronic bulletin board systems (Sysops) are 
  178. encouraged to post QCP downloading by their users, as long as the 
  179. above conditions are met.  Those who have permission from SemWare 
  180. to distribute or sell QEdit itself are exempt from these 
  181. restrictions.
  182.  
  183. The author assumes no liability for the use of QCP, and does not 
  184. guarantee its fitness for any purpose whatsoever.
  185.  
  186.  
  187. QUICK INSTALLATION
  188. ------------------
  189. If you are upgrading from QCP 2.0 or QCP 1.0, see the file          |
  190. QCP-READ.ME for info on changing your configuration.  Otherwise,    |
  191. follow the instructions below:                                      |
  192.  
  193.  
  194. STEP 0
  195. ------
  196. Set aside your original copies of all the QCP files in a safe 
  197. place.  Always work on a copy, not the original!
  198.  
  199.  
  200. STEP 1
  201. ------
  202. PUT QCP.EXE AND QCP.DAT IN A CONVENIENT DIRECTORY ON YOUR DISK.  
  203.  
  204. QCP.EXE should exist somewhere along your current PATH statement 
  205. so that it can be executed easily.   QCP.DAT can exist in one of 
  206. three places: (1) the current directory,  (2) the same directory 
  207. that QCP.EXE is in, or (3) somewhere along your current PATH 
  208. statement.  It is searched for by QCP in that order.
  209.  
  210. If you are going to use the macro creation feature of QCP, and 
  211. this is highly recommended, then make sure QMAC.EXE is accessible 
  212.  
  213.  
  214. QCP 2.08 Documentation                                    Page 5
  215.  
  216.  
  217. along your PATH as well.
  218.  
  219. We recommend keeping QCP.EXE (and QCP.DAT, if you use the /R 
  220. option) as well as QMAC.EXE on a RAMdisk, and listing that 
  221. RAMdisk drive letter first in your PATH= environment variable.  
  222. This allows QCP to operate very rapidly, even on relatively 
  223. "slow" systems.
  224.  
  225.  
  226. STEP 2
  227. ------
  228. EDIT QCP.DAT TO SUIT THE FILE EXTENSION(S) YOU USE AND THE 
  229. COMPILER OR UTILITY PROGRAM THAT SHOULD BE INVOKED FOR EACH ONE.  
  230.  
  231. There are comments in the supplied QCP.DAT to help you 
  232. remember the syntax of commands, as well as several sample 
  233. command lines for popular compilers.  See also the section on 
  234. configuration below for more details on other compilers.
  235.  
  236. It is assumed that the command line you specify for your compiler 
  237. will redirect the error messages from the compiler to a file, by 
  238. default called ERRORS.LST.  This file can then be loaded into 
  239. QEdit for viewing, but more importantly it is read by QCP in 
  240. order to construct QEdit macros that will move your cursor to 
  241. each error in your file.  So, typically each command line you use 
  242. in QCP.DAT should end with ">$O", which causes the output to be 
  243. redirected to the error file.  Use the /O command line switch, or 
  244. the ..O command in QCP.DAT, to assign the filename that will be 
  245. substituted for $O.  
  246.  
  247. If this is the only configuration you are going to use, you will 
  248. probably want to "install" these options into your copy of 
  249. QCP.EXE permanently by typing "QCP /C" at a DOS prompt.   If you 
  250. want to use QCPSMALL to save memory, use QCP.EXE to install it by 
  251. typing QCP /Cqcpsmall.exe at a DOS prompt.  You can rename 
  252. QCPSMALL.EXE if you wish.
  253.  
  254.  
  255. STEP 3
  256. ------
  257. ADD THE MACRO DEFINITION(S) FROM QCONFIG.QCP INTO YOUR 
  258. QCONFIG.DAT, AND USE QCONFIG TO INSTALL THESE KEY(S) INTO YOUR 
  259. COPY OF QEDIT.
  260.  
  261. Note that the default macro is set up to always create and read 
  262. the ERRORS.LST and ERRORS.MAC file in the CURRENT directory.  If 
  263. you have a RAM disk or other fast disk drive, you will probably 
  264. want to edit the macro definition to put these files there.
  265.  
  266.  
  267. QCP 2.08 Documentation                                    Page 6
  268.  
  269.  
  270. Within the macro, the /O and /M command line switches for QCP are 
  271. used to make sure the filenames match.  You may want to configure 
  272. these filenames into QCP permanently, and remove the references 
  273. to /O and /M in the macro definition.  
  274.  
  275.  
  276. QUICK START
  277. -----------
  278. Edit a file for which you created a definition in QCP.DAT.  I.e., 
  279. if you defined something for .C, then edit TEMP.C.  Put in a 
  280. deliberate syntax error, something that you know the compiler 
  281. will generate an error message for.  Save the file to disk.
  282.  
  283. Now, hit the function key you assigned in QCONFIG.DAT.  QEdit 
  284. will shell out, run QCP, which will run your compiler.  Errors 
  285. will be redirected to ERRORS.LST, and macros created.  When you 
  286. return to QEdit, your file will be in the top window, and your 
  287. error messages will be in the bottom.
  288.  
  289. If your chosen compiler generates compatible error messages (see 
  290. Compiler Compatibility, below), you will be able to hit Alt-1 
  291. through Alt-0 to move to each of the errors your compiler issued, 
  292. both in the source and output windows.  Or, if you are using the    |
  293. /W+ mode (rewrite error file), you should be able to just hit       |
  294. Shift-F10 to step to each successive error message.                 |
  295.  
  296. And that's all there is to it!  
  297.  
  298. There are some other features of QCP you may want to take 
  299. advantage of, read on to find out about those, as well as how to 
  300. configure QCP's behavior to suit your specific needs.
  301.  
  302.  
  303. RUNNING QCP
  304. -----------
  305. The flow of operation of QCP generally works like this:
  306.  
  307.      1.   User hits "compile" macro key.   QEdit shells
  308.           out and runs QCP.
  309.  
  310.      2.   QCP picks a compiler command line based on the name of 
  311.           the file passed along by QEdit.  The compiler is 
  312.           executed.
  313.  
  314.      3.   The compiler does it's job, writing any error messages 
  315.           to the error file specified by QCP.  (ERRORS.LST)
  316.  
  317.  
  318. QCP 2.08 Documentation                                    Page 7
  319.  
  320.  
  321.      4.   QCP regains control, reading the error file (if any)           
  322.           which was written by the compiler (ERRORS.LST).  If it 
  323.           can locate error messages, it writes text macros to the 
  324.           temp file specified ($QCP$.TMP).  It then invokes QMAC.
  325.  
  326.      5.   QMAC converts the text macros to binary macros that can 
  327.           be loaded by QEdit.  ($QCP$.TMP becomes ERRORS.MAC).
  328.  
  329.      6.   QCP regains control, and exits to QEdit.
  330.  
  331.      7.   QEdit loads the error output from the compiler 
  332.           (ERRORS.LST) into a window so the user can see the 
  333.           result, and loads the macro file (ERRORS.MAC) if it 
  334.           exists, produced by QMAC so that error messages can be 
  335.           found with single keystrokes.
  336.  
  337. It actually runs quite quickly, as long as you make sure the 
  338. necessary files are easily accessible.  If you are concerned 
  339. about the speed of operation, the generation of QEdit macros can 
  340. be disabled (See /Q).
  341.  
  342. If you are having trouble getting QCP to work as described, more 
  343. than likely your file names are getting out of sync.  Please make 
  344. sure that the file names (1) in your QEdit macro key, (2) in QCP 
  345. itself, and (3) in any batch files you use to run compilers; all 
  346. agree as to where and under what name each file is placed.
  347.  
  348. Also, when compiling this way, a pretty good bit of RAM is 
  349. required, all told.  This is because QEdit, your source file, 
  350. QCP, and your compiler (not to mention a couple copies of the 
  351. stub portion of COMMAND.COM) are all in memory at the same time.  
  352. If you have very large source files, or very little free RAM, you 
  353. may have trouble running QCP from a QEdit function key.  If so, 
  354. then take a look at COMPILE.BAT.  It demonstrates the use of QCP 
  355. from the DOS command line.
  356.  
  357.  
  358. QCP 2.08 Documentation                                    Page 8
  359.  
  360.  
  361. COMMAND LINE SWITCHES AND QCP
  362. -----------------------------
  363. If you just type QCP at a DOS prompt, it will respond with this 
  364. screen of info.  (Display of defaults removed here to fit the 
  365. screen on a normal page):
  366.  
  367. ----------------------------------------------------------------
  368. QCP:  QEdit Compiler Program  x.yy   dd-mmm-yyyy
  369. Copyright (C) 1989, Tim Farley.  All Rights Reserved.
  370.  
  371. QCP /R[file] /C[file] /S /G /Q /B /W /P /Ichar /Ofile /Mfile /#  FILE  opts...
  372.  
  373. /R        Reads configuration info from specified file.  
  374. /C        Configures defaults into specified copy of QCP.
  375. /S        Shows QCP's current configurable defaults
  376. /G+ /G-   Guess or don't guess a missing file extension
  377. /Q+ /Q-   Create or don't create a QEdit binary macro file
  378. /B+ /B-   Batch mode:  create autoexec macro for QEdit              |
  379. /W+ /W-   Write or don't write copy of error file                   |
  380. /P+ /P-   Pause or don't pause for keystroke after an error         |
  381. /Ichar    Char to be Inserted before row/col in output
  382. /Ofile    File to which Output will be redirected
  383. /Mfile    QEdit Macro file name to be generated
  384. /#        i.e. /1 thru /9, uses the specified special
  385.           extension definition instead of the file's extension
  386. FILE      is source file to compile.
  387. opts      are options to be passed to compiler commmand line
  388.  
  389. /R, /C, and /S are mutually exclusive
  390. If none of them are present, internal defaults are used
  391. ----------------------------------------------------------------
  392.  
  393. All QCP switches MUST precede the file name.  Both "/" and "-" 
  394. are recognized as switch characters. However, each switch must be 
  395. preceded by its own switch character.  Each switch must be 
  396. separated from the others by at least one space.  
  397.  
  398. The switches that contain file names (/M and /O, optionally on /C 
  399. and /R) MUST NOT contain a space between the switch and the file 
  400. name.
  401.  
  402. The boolean switches, like /G and /Q, can have "+" or "-" behind    |
  403. them to set the specified switch on or off.  If nothing is behind   |
  404. the switch, it is set on.  If any character other than "+" or "-"   |
  405. is behind a boolean switch, for instance "=", then the current      |
  406. value is TOGGLED.                                                   |
  407.  
  408.  
  409. QCP 2.08 Documentation                                    Page 9
  410.  
  411.  
  412. QCPSMALL includes all the capabilities of QCP, EXCEPT the /R and 
  413. /C options.  As such, you MUST use QCP.EXE to install defaults 
  414. from your QCP.DAT into QCPSMALL.EXE (see details on the /C option 
  415. below).  The advantage of QCPSMALL is that it takes about 6K less 
  416. disk space and RAM.  It is designed for those who are sticklers 
  417. about disk and RAM usage.  Its help display will be a slightly 
  418. abbreviated version of the above.
  419.  
  420. /R  -- READ CONFIG INFO FROM DISK
  421. ---------------------------------
  422. When /R is present, QCP will always read its configuration data 
  423. from an external file, overwriting the internal defaults.  
  424. QCPSMALL does not support this option.
  425.  
  426. If you specify a file specification (which can include a path) 
  427. immediately after /R, that file will be read instead of QCP.DAT.  
  428. An extension of '.DAT' is added if none was present.
  429.  
  430. Network users especially may wish to make use of the /R option if 
  431. the normal location for QCP.EXE is on your server, and you do not 
  432. have write permission on that directory.
  433.  
  434. If using the default file name, or if the file name specified 
  435. does not contain a specific path specification, QCP searches for 
  436. it in the following way:  first in the current directory, then 
  437. (if DOS 3.0 or higher is present) in the directory from which 
  438. the program loaded, then down each of the directories in your 
  439. PATH= statement.
  440.  
  441. /C  -- CONFIGURE QCP.EXE'S DEFAULTS
  442. -----------------------------------
  443. The /C option causes QCP to read its configuration data from 
  444. QCP.DAT, and install this info as new defaults into QCP.EXE.  
  445. This allows you to permanently customize your copy of QCP.
  446.  
  447. A /R is implicit in the use of /C.  However, you can use /R on 
  448. the command line BEFORE /C to choose the configuration file.
  449.  
  450. If you specify a file specification (possibly including a path) 
  451. immediately after /C, that file will be configured instead of 
  452. QCP.EXE.  An extension of '.EXE' is added if none was present.  
  453. This must be a copy of the same version of QCP that you are 
  454. running.  This is how you can install your copy of QCPSMALL.EXE.  
  455.  
  456. QCP searches for its EXE file in the same way it searches for the 
  457. data file.  If a path specification is present, then the file 
  458. will only be searched for there.
  459.  
  460.  
  461. QCP 2.08 Documentation                                    Page 10
  462.  
  463.  
  464. Please be aware that since /C writes data into the EXE file, it 
  465. is possible for your copy of QCP to be damaged by this operation.  
  466. Make sure you always have a clean, uninstalled copy of QCP safely 
  467. tucked away.
  468.  
  469. In operation on networks, you may not wish to use the /C option, 
  470. if QCP.EXE will be located on a server drive to which you do not 
  471. have write access.  See /R above.
  472.  
  473. /S  -- SHOW QCP.EXE'S CURRENT DEFAULTS
  474. --------------------------------------
  475. The /S option is a companion to /C.  It allows you to see the 
  476. current defaults installed into QCP.EXE.  
  477.  
  478. Note that /R, /C and /S are mutually exclusive.  If you combine 
  479. them on a command line, the last one specified will take control.
  480.  
  481. /G+ or /G-  -- GUESSING OF FILE EXTENSION
  482. -----------------------------------------
  483. Normally, if no '.' appears in the file name to compile, QCP will 
  484. attempt to guess the correct extension just as QEdit does when 
  485. loading files into memory.  The extensions are guessed in the 
  486. same order that they are defined in QCP.DAT.
  487.  
  488. This is mainly for those using QCP from the DOS command line, to 
  489. save typing.  The /G option can be used to enable or disable this 
  490. feature.  Mainly you would use this if you have files with no 
  491. extension, and you have an entry for this in QCP.DAT.
  492.  
  493. The default value for filename guessing is controlled by the 
  494. "..G" command in QCP.DAT.  The release version has it turned ON.
  495.  
  496. /Q+ or /Q-  -- QEDIT MACRO CREATION
  497. -----------------------------------
  498. The /Q switch allows you to turn macro creation on or off without 
  499. reconfiguring QCP.  /Q+ activates macro creation, /Q- deactivates 
  500. it.  
  501.  
  502. The default value for macro creation is controlled by the "..Q" 
  503. command in QCP.DAT.  The release version has it turned ON.
  504.  
  505. /B+ or /B-  -- BATCH MODE OPERATION                                 |
  506. -----------------------------------                                 |
  507. The /B switch controls use of QCP in a "batch mode" such as in      |
  508. COMPILE.BAT.  When batch mode is activated, an extra macro key is   |
  509. written first in the QEdit macro file.  This macro key is used as   |
  510. an "auto execute" macro via the QEdit /E command line switch.       |
  511. COMPILE.BAT is supplied as a sample of how this works.              |
  512.  
  513.  
  514. QCP 2.08 Documentation                                    Page 11
  515.  
  516.  
  517. The batch mode macro is constructed by QCP when it locates the      |
  518. first error line in the compiler output, so the expansion strings   |
  519. $S, $R, $C, $K, $U, and $L all have valid meanings at the time      |
  520. this macro is constructed.                                          |
  521.  
  522. The default value for batch mode, as well as the type of macro      |
  523. created, is controlled by the "..B" command in QCP.DAT.  The        |
  524. release version has it turned ON, with a macro set up to work       |
  525. with COMPILE.BAT.                                                   |
  526.  
  527. /W+ or /W-  -- WRITE NEW ERROR OUTPUT FILE                          |
  528. ------------------------------------------                          |
  529. The /W switch controls whether QCP will write a new copy of the     |
  530. compiler output file (normally ERRORS.LST).  The purpose of this    |
  531. is to insert a certain ASCII character (see /I or ..I)              |
  532. immediately to the left of the row and column numbers that QCP      |
  533. found in the compiler output.                                       |
  534.  
  535. This allows the "next error" and "previous error" macro keys to     |
  536. find row numbers and column numbers without having any special      |
  537. knowledge of how the error messages are formatted.                  |
  538.  
  539. Since this involves writing a new copy of ERRORS.LST, it can slow   |
  540. down the process somewhat, hence the flag to turn it off.  If you   |
  541. are happy with using the Alt-numeric keys to jump to the first      |
  542. ten errors, you can turn this option off and save a little time.    |
  543.  
  544. However, if you use a compiler that generates large numbers (more   |
  545. than 10 or 12) of error messages; or if you wish to use the GREP    |
  546. macro in QCONFIG.QCP to its full advantage; leave this option       |
  547. turned ON.  Note:  the Next Error Macro and the Previous Error      |
  548. Macro (see ..N and ..P respectively) are not written to the macro   |
  549. file by QCP unless this option is turned on.                        |
  550.  
  551. The default for writing a new error file is controlled by the       |
  552. "..W" command in QCP.DAT.  The release version has it turned ON.    |
  553.  
  554. /P  -- PAUSE AFTER ERROR                                            |
  555. ------------------------                                            |
  556. When invoking QCP from a QEdit macro key, it can happen that QCP    |
  557. issues an error message, and QEdit clears it off the screen and     |
  558. returns to the editing session so quickly that you do not see it.   |
  559.  
  560. The /P option allows you to cause QCP to pause and ask you to       |
  561. "Press any key to continue" when it encounters a fatal error        |
  562. condition.                                                          |
  563.  
  564.  
  565. QCP 2.08 Documentation                                    Page 12
  566.  
  567.  
  568. /I  -- INSERTION CHARACTER                                          |
  569. --------------------------                                          |
  570. The /I option lets you control what character will be inserted      |
  571. into the rewritten output file, just to the left of the row and     |
  572. column number.  This only occurs if /W is set to ON (see            |
  573. description of /W above).  The insertion character allows the       |
  574. next error and previous error macros to operate.                    |
  575.  
  576. It is very important that you pick an insertion character that      |
  577. does not appear anywhere else in your error output.                 |
  578.  
  579. The character to set should appear IMMEDIATELY to the right of      |
  580. /I.  If the first character after /I is numeric, then the           |
  581. information is treated as a decimal ASCII code.  If it is not       |
  582. numeric, then the character is taken directly.                      |
  583.  
  584. The default for insertion character is controlled by                |
  585. the "..I" command in QCP.DAT.  The release version has it set to    |
  586. CHR( 255 ), which displays as a blank space.                        |
  587.  
  588. /O  -- OUTPUT FILE NAME
  589. -----------------------
  590. The /O option lets you specify the Output file name that will be 
  591. used by QCP.  This filename is substituted for "$O" (see below) 
  592. if present on your target compiler command lines.  This is also 
  593. the file that QCP will read back in after the compiler runs, to 
  594. attempt to locate any error messages.
  595.  
  596. The Output file name can also be configured with the "..O" 
  597. command in QCP.DAT, however if /O is present it will override the 
  598. value specified in QCP.DAT.
  599.  
  600. The /O command line option is intended so that the filenames used 
  601. can be completely controlled by your QEdit function key macro.  
  602.  
  603. /M  -- MACRO FILE NAME 
  604. ----------------------
  605. The /M option is similar to /O, except it controls the name of 
  606. the binary macro file created by QCP and QMAC for use in finding 
  607. errors in your source code.  This file name is replaced wherever 
  608. "$M" appears in your target command line(s).
  609.  
  610. The macro file name can also be configured using the "..M" 
  611. command in QCP.DAT, however if /M is present it will override the 
  612. value specified in QCP.DAT.
  613.  
  614. On both of the above files, QCP will look for an environment 
  615. variable called TMP, to determine a suitable place to put "temp" 
  616. files.  This is the same as most Microsoft utilities which will 
  617. use the TMP environment variable to locate your RAM disk for 
  618.  
  619.  
  620. QCP 2.08 Documentation                                    Page 13
  621.  
  622.  
  623. their use in writing scratch files.  If you invoke QCP with the 
  624. /S switch, you will see the result of this when the three file 
  625. names are listed.
  626.  
  627. You may not want this to happen, especially if you want to insure 
  628. that the file names referred to in your QEdit macro key are the 
  629. same as those used by QCP.  If so, just include a drive and/or 
  630. path specification in the file name.  If you want them always to 
  631. be in the "current" directory, then use ".\" prior to each file 
  632. name. 
  633.  
  634. /1 through /9  -- SPECIAL CUSTOM FILE EXTENSIONS
  635. ------------------------------------------------
  636. The number options let you override the command line selection 
  637. that QCP would normally make based on the extension of the file 
  638. you are editing.  This is intended so that you can define other 
  639. QEdit function keys, that invoke text search or other utilities 
  640. on any arbitrary file, regardless of its name.
  641.  
  642. A sample of this, using GREP, is supplied. This is also the mode 
  643. in which QCP can replace the function of the QMAKE utility.  See 
  644. examples in in QCP.DAT and QCONFIG.QCP.
  645.  
  646. FILE  -- FILE TO COMPILE
  647. ------------------------
  648. The first non-switch parameter on the QCP command line is assumed 
  649. to be the file you wish to compile.  This is normally generated 
  650. using "CurrentFilename" in a QEdit macro key, but could be typed 
  651. by you.  This can be a full file specification including path.  
  652.  
  653. options  -- COMPILER OPTIONS
  654. ----------------------------
  655. Any parameters past the filename on the QCP command line are 
  656. assumed to be options for the target compiler's command line.  
  657. They are simply passed along, assuming you have put the 
  658. appropriate $1, $2 etc. strings on your compiler command line 
  659. templates in QCP.DAT.  
  660.  
  661. All of these options must be delimited on both sides by spaces.  
  662. Note that this is a restriction of QCP that might not be shared 
  663. by your compiler.  
  664.  
  665.  
  666. QCP 2.08 Documentation                                    Page 14
  667.  
  668.  
  669. QEDIT MACRO KEY CUSTOMIZATION
  670. -----------------------------
  671. QCP is normally intended to be invoked from a QEdit macro key.  A 
  672. sample key is provided in QCONFIG.QCP, and is repeated here.  We 
  673. use Control-F9 in this example, you could use any key.
  674.  
  675. ^f9 MacroBegin SaveFile OneWindow UnmarkBlock MarkLine              |
  676.     EditFile 'errors.lst' Return Quit                               |
  677.     GotoBlockBeg UnmarkBlock                                        |
  678.     Dos 'QCP/O.\errors.lst /M.\errors.mac '                         |
  679.     CurrentFilename Return " "                                      |
  680.     HorizontalWindow EditFile Return PrevWindow                     |
  681.     MacroRead 'errors.mac' Return                                   |
  682.  
  683. The macro definition above is word-wrapped for readability, 
  684. normally in QCONFIG.DAT it would appear all on one line.
  685.  
  686. You may want to customize this macro, so a little explanation of 
  687. how it works may be in order.  The first line simply clears any 
  688. split windows off the screen, and marks a one-line block in
  689. your source file, so we can get back there.  The second line 
  690. makes sure that any previous compiler output file is purged from 
  691. QEdit's ring.  The third line returns us to our source file and 
  692. clears the mark we created.
  693.  
  694. The fourth and fifth lines do the main work, invoking QCP with the 
  695. current filename as its main parameter.  Notice that /O and /M are 
  696. used to insure that the filenames used in the macro stay in sync 
  697. with those used by QCP.  
  698.  
  699. The sixth line splits the screen and brings up the error output 
  700. file in the lower window, and the seventh line reads in the 
  701. macros created by QCP, so you can jump from error to error.
  702.  
  703. In QCP 1.0, we redirected the output from QCP in the macro key 
  704. itself, i.e. "QCP current_filename >ERRORS.LST".  In QCP 2.x you 
  705. definitely DO NOT want to do that, or it will prevent the 
  706. creation of macro keys by QCP.  
  707.  
  708. Create your compiler command lines in QCP.DAT to do the 
  709. redirection there, or if you are invoking your compiler from a 
  710. batch file, do the redirection inside the batch file.  One 
  711. advantage of this is that you will see the output from QCP (and 
  712. QMAC, if applicable) on the screen, even though your compiler is 
  713. redirected to disk.  
  714.  
  715.  
  716. QCP 2.08 Documentation                                    Page 15
  717.  
  718.  
  719. COMPILER COMPATIBILITY
  720. ----------------------
  721. The macro creation feature of QCP hinges on QCP's ability to read 
  722. the error messages created by your compiler.  By default, QCP 
  723. assumes that your compiler issues error messages in this form:
  724.  
  725.   <text> FILENAME.EXT <non-numeric chars> XX <text> YY <message>
  726.  
  727. where XX is the number of the source line on which the error 
  728. occurred, and YY is the column number on that line.  
  729.  
  730. The default case allows for error messages similar to:
  731.  
  732.           FILENAME.EXT (ROW,COL): MESSAGE
  733.           FILENAME.EXT: ROW: MESSAGE
  734.           "FILENAME.EXT", ROW COLUMN: MESSAGE
  735.           D:\PATH\FILENAME.EXT(ROW): MESSAGE
  736.  
  737. Most all of CURRENT VERSIONS of the compilers put out by 
  738. Microsoft Corporation, and Borland International, and every C 
  739. compiler we know of, can be made to issue error messages in this 
  740. form, and thus will work fine by default.
  741.  
  742. However, QCP allows you to configure the "unique string" (which 
  743. uniquely identifies error message lines), and the "lead-in 
  744. string" (which precedes the line number) for each compiler 
  745. command line.  This allows you to adapt its behavior to compilers 
  746. which do not include the file name in the error message line, or 
  747. which do not put the line number first after the file name.
  748.  
  749.  
  750. CUSTOM COMPILER CONFIGURATIONS
  751. ------------------------------
  752. Non-standard compilers can still be handled by the appropriate 
  753. configuration line in QCP.DAT.  The syntax for this is as follows:
  754.  
  755.           .ext  "command line" "unique string" [ "lead-in string" ]
  756.  
  757. Either single or double quotes can be used, but they must match 
  758. on either end of a given string.  If you need to include a quote 
  759. mark inside one of the strings, use the other type of quote mark 
  760. to delimit it.  Any number of commas and/or spaces (if present) 
  761. between the strings will be ignored.
  762.  
  763. Command line is the normal compiler command line that would have 
  764. been on the line by itself.  
  765.  
  766.  
  767. QCP 2.08 Documentation                                    Page 16
  768.  
  769.  
  770. The unique string is some string that is found in the compiler's 
  771. output ONLY in error message lines.  This typically might be 
  772. something like "***ERROR:", you will have to consult your 
  773. compiler manual for likely candidates.  
  774.  
  775. The lead-in string, if present, specifies a string that will 
  776. always be found in an error line to the left of the source line 
  777. number.  It is not mandatory, if not present it will default to 
  778. the same thing as the unique string.  The first numeric 
  779. characters to the right of the lead-in string must be the line 
  780. number.  Keep in mind that the file name itself, the error 
  781. message, or the line of source code itself (if echoed as part of 
  782. the error message) might contain numeric characters that could be 
  783. misinterpreted as a line number.
  784.  
  785. Maximum length of the unique and lead-in strings is 16 characters 
  786. each, they will be truncated if longer.  You CAN include 
  787. substitution strings like $N and $F inside the unique string and 
  788. lead-in string.  The length limitation DOES NOT apply to the 
  789. strings AFTER they are expanded.  The strings ARE NOT case 
  790. sensitive when matching occurs.
  791.  
  792. Example:
  793.  
  794. Your compiler generates error messages like:
  795.  
  796.           ***ERROR:  Syntax error on line 34
  797.  
  798. You would set your unique string to "***ERROR" and your lead-in 
  799. string to "line".
  800.  
  801. Choose your strings carefully, as some compilers generate very      |
  802. inconsistent looking error messages.  A common mistake is to try    |
  803. to key off the word "error" in the message, which will then cause   |
  804. QCP to ignore "warning" messages.                                   |
  805.  
  806.  
  807. COMPATIBLE COMPILERS
  808. --------------------
  809. Below are some cases of specific compilers, and the command line 
  810. switches or other actions necessary to make them conform to what 
  811. QCP is expecting.  In many cases, you will want to add or 
  812. subtract switches to or from the sample command lines.  Consult 
  813. your compiler manual.
  814.  
  815.  
  816. QCP 2.08 Documentation                                    Page 17
  817.  
  818.  
  819. Most compilers allow you to specify either just a simple file 
  820. name, or a complete path specification on the command line. Keep 
  821. this in mind when selecting whether to use $F, or $N, or $N.$E, 
  822. etc.  for your filename on the command line.  The way you specify 
  823. the source file name on the command line, can affect how the 
  824. compiler echoes it in error messages.  You may want to experiment 
  825. with this, if you are defining specific unique or lead-in strings 
  826. that involve the filename.
  827.  
  828. If your compiler is not covered in this section, see the section 
  829. "error message strings" below for information on how to build 
  830. your own configuration from scratch.
  831.  
  832. COMPILER                   LINE TO PUT IN QCP.DAT
  833. -------------------------  -------------------------------
  834. Clipper by Nantucket, 8/87 .prg  "clipper $N >$O","line "               |
  835. FoxBase Compiler v2.1      .prg  "foxpcomp -e $F >$O","Error in line "  |
  836. FST Modula-2 v2.0a         .mod  "m2comp $F >$O","File: $F",", Line"
  837. Microsoft Assembler 5.x    .asm  masm         $F;  >$O
  838. Microsoft BASIC            .bas  bc   /Z      $F;  >$O
  839. Microsoft C 5.x            .c    cl   /c /W3  $F   >$O
  840. Microsoft FORTRAN 4.0      .for  fl   /c      $F   >$O
  841. Microsoft Menu Maker v1.2  .def  "makemenu  $N >$O","Error ("           |
  842. Microsoft Pascal 4.0       .pas  pas1 /H      $F;  >$O
  843.      Alternative:          .pas  pl   /c /Zz  $F   >$O
  844. Microsoft Quick C 1.01     .c    qcl          $F   >$O                  |
  845. QMac (QEdit macros) 2.x    .qm   "qmac $N.mac $F /B /A- >$O"  "QMAC "   |
  846. Telix 3.x Script Compiler  .slt  cs           $F   >$O
  847. TopSpeed Modula-2 1.14     .mod  m2 /c        $F   >$O                  |
  848. Turbo Assembler 1.00       .asm  "tasm $F >$O"  "** $F"                 |
  849. Turbo C 2.0                .c    tcc  -c -w   $F   >$O
  850. Turbo Pascal 4.0 & 5.0     .pas  tpc  /q      $F   >$O
  851. Watcom C 6.5               .c    wcl  /c      $F   >$O                  |
  852.  
  853. NOTES:
  854.      The /H switch for Microsoft Pascal is undocumented.
  855.      The Microsoft BASIC and FORTRAN, Clipper and FoxBase command 
  856.           lines have not been tested by us personally.
  857.      Microsoft Menu Maker comes with the Microsoft Mouse.           |
  858.      We recommend you use the /W+ option when working with          |
  859.           Clipper, because of the way that Clipper writes its       |
  860.           output.                                                   |
  861.  
  862.  
  863. QCP 2.08 Documentation                                    Page 18
  864.  
  865.  
  866. Many compilers will compile files other than the one specified,     |
  867. due to an automatic "make" function built into the compiler.        |
  868. This can sometimes result in either (1) QCP ignoring error          |
  869. messages from the compiler, because they don't pertain to the       |
  870. current file or (2) QCP jumping to erroneous error lines in the     |
  871. current file, because it was unable to distinguish that they did    |
  872. not pertain to the current file.  Some of the compilers that are    |
  873. prone to this are Clipper, Turbo Pascal, both of the Modula-2       |
  874. compilers, and others.  We plan to address this in a future         |
  875. version of QCP.                                                     |
  876.  
  877. Below are some instances where just a simple command line will 
  878. not do the trick.  Even if you do not use one of them, you may 
  879. want to read through them to see what kinds of configuration 
  880. tricks are possible.
  881.  
  882.  
  883. I/O REDIRECTION PROBLEMS, TIPS                                      |
  884. ------------------------------                                      |
  885. Many of the unusual compiler configurations listed below result     |
  886. from problems redirecting the output to the compiler.  If a         |
  887. program writes its screen output to the "Standard Output Device"    |
  888. under DOS, then the text can be redirected normally, using the      |
  889. ">" character followed by a filename on the dos command line.       |
  890. However, if the output is written to the "Standard Error Device",   |
  891. redirection is impossible using DOS alone.                          |
  892.  
  893. We know of two utilities that can assist with compilers that use    |
  894. Standard Error to display error messages.  One is ERROUT.EXE,       |
  895. which is a utility Microsoft ships with many of its recent          |
  896. compiler products.                                                  |
  897.  
  898. The other is CONCOPY.EXE, which is a Freeware product by            |
  899. Christopher J. Dunford and The Cove Software Group.                 |
  900.  
  901. Microsoft's ERROUT.EXE allows you to redirect just the Standard     |
  902. Error device to a file.  The syntax is as follows:                  |
  903.  
  904.           ERROUT /f filename command_line                           |
  905.  
  906. where filename is the file to which to redirect Standard Error,     |
  907. and command_line is a DOS command line to execute while the         |
  908. redirection is in effect.  The /f must be lower case, and there     |
  909. must be a space between it and the filename.                        |
  910.  
  911. Cove Software's CONCOPY will also redirect Standard Error, as       |
  912. well as Standard Output, and it has the additional effect that      |
  913. the output will appear on the screen while it is also redirected.   |
  914. This can be very useful if you have compilers that take a great     |
  915. deal of time to run, because you will be able to see their run-     |
  916.  
  917.  
  918. QCP 2.08 Documentation                                    Page 19
  919.  
  920.  
  921. time messages on the screen, even while they are redirected to      |
  922. disk.  Here is the syntax:                                          |
  923.  
  924.           CONCOPY filename command_line                             |
  925.  
  926. where filename is again the file to which redirection should        |
  927. occur, and command_line is the normal compiler command line.  You   |
  928. will need CONCOPY version 1.10 (10/11/88) or later to use this      |
  929. syntax.  You can get CONCOPY version 1.10 on most IBM-oriented      |
  930. BBS's, including the SemWare QEdit Support Board.                   |
  931.  
  932. CONCOPY will allow console output to appear on the screen even      |
  933. while it is redirected.  For this reason, you may wish to use       |
  934. CONCOPY even with compilers that DO NOT need redirection            |
  935. assistance, in order to see the error messages on the screen.       |
  936.  
  937. If you do use CONCOPY with all your compiler configurations, we     |
  938. recommend that you DO NOT use normal I/O redirection in addition.   |
  939. In other words, use EITHER "CONCOPY $O" at the beginning OR ">$O"   |
  940. at the end of your compiler command lines, but NOT BOTH.            |
  941.  
  942. See the sections below for examples of the use of ERROUT and        |
  943. CONCOPY with QCP.                                                   |
  944.  
  945.  
  946. MICROSOFT FORTRAN 3.x
  947. ---------------------
  948. Microsoft Fortran 3.x can work with QCP.  Its error messages look 
  949. like this:
  950.  
  951.           ***** Error XXX,line YY -- ERROR MESSAGE
  952.  
  953. To get this, we define the unique string and lead-in string as 
  954. follows:
  955.  
  956.           .FOR   "for1  $N.$E;  >$O","*****",",line "
  957.  
  958. You may wish to put this command line in a batch file instead of 
  959. invoking it directly, so that you can call up PAS2 and PAS3 of 
  960. the compiler as needed.  If so, be sure to pass $O to the batch 
  961. file as a command line parameter.
  962.  
  963.  
  964. QCP 2.08 Documentation                                    Page 20
  965.  
  966.  
  967. MICROSOFT MASM 4.0
  968. ------------------
  969. Masm produces compatible error messages by default.  
  970.  
  971. Unfortunately, MASM 4.0 writes the error messages to Standard 
  972. Error, so we have to use a utility to redirect it (see above).  
  973. Put one of these two lines in your QCP.DAT:
  974.  
  975.           .ASM   ERROUT  /f $O  MASM  $N.$E;
  976.  
  977.           .ASM   CONCOPY  $O  MASM $N.$E;                           |
  978.           
  979. The part to the left of MASM causes Standard Error to be redirected to 
  980. the output file.  
  981.  
  982. Later versions of MASM write to Standard Output. 
  983.  
  984.  
  985. DBFAST 1.03
  986. -----------
  987. This dBASE III+ compatible compiler does not generate error 
  988. messages compatible with the default case.  They look like this:
  989.  
  990.           MESSAGE TEXT. Line #:    XX
  991.  
  992. where XX is the line number.  We will define a unique string in 
  993. order to make this work with QCP.
  994.  
  995. Because of the way redirection occurs with DBCOMP, you need to 
  996. use a batch file to run the compiler.  Here is DBC.BAT:
  997.  
  998.           ECHO OFF
  999.           DBCOMP %1 -W -PF
  1000.           COPY   %1.ERR %2
  1001.           DEL    %1.ERR
  1002.  
  1003. The -PF switch redirects output to a file.  This file always has 
  1004. the same root name as the file being compiled, with an extension 
  1005. of "ERR".  The -W switch causes "warning" messages to also be 
  1006. issued, which you may or may not desire.  Use this line in 
  1007. QCP.DAT:
  1008.  
  1009.           .PRG  "DBC $N $O","Line #:"
  1010.  
  1011. which sets both the unique string and the lead-in string to the 
  1012. string "Line #:"
  1013.  
  1014.  
  1015. QCP 2.08 Documentation                                    Page 21
  1016.  
  1017.  
  1018. It is important to use $N so that the ".ERR" can be appended in 
  1019. the batch file.  Also, make sure you have the DBFAST RAM-resident 
  1020. "engine" loaded into memory before you enter QEdit, as it is NOT 
  1021. RECOMMENDED to attempt to load it from inside QEdit, since it is 
  1022. a TSR program.
  1023.  
  1024.  
  1025. NORTON GUIDES DATABASE COMPILER 1.04                                |
  1026. ------------------------------------                                |
  1027. The tools supplied with the Norton Guides to create your own        |
  1028. online help databases can be used with QCP.  However, they          |
  1029. require both redirection help and a special unique/lead-in          |
  1030. string.                                                             |
  1031.  
  1032. Both of Norton's programs write the error messages to Standard      |
  1033. Error.  Put one of these two sets of lines in your QCP.DAT:         |
  1034.  
  1035.           .NGC  "errout /f $O ngc  $F"  "Line "                     |
  1036.           .NGM  "errout /f $O ngml $F"  "Line "                     |
  1037.  
  1038.           .NGC  "concopy   $O ngc  $F"  "Line "                     |
  1039.           .NGM  "concopy   $O ngml $F"  "Line "                     |
  1040.  
  1041. Norton does not recommend particular extensions for the Database    |
  1042. source files or the Menu Link Control files.  For the sake of       |
  1043. this example, we have adopted ".NGC" for the former and ".NGM"      |
  1044. for the latter, feel free to change these to whatever default       |
  1045. extensions you use.                                                 |
  1046.  
  1047.  
  1048. MICROSOFT QUICK PASCAL 1.00                                         |
  1049. ---------------------------                                         |
  1050. Quick Pascal's command-line compiler also uses Standard Error to    |
  1051. output error messages.  Put one of the following two lines in       |
  1052. your QCP.DAT:                                                       |
  1053.  
  1054.           .PAS  ERROUT  /f $O  qpl $F                               |
  1055.  
  1056.           .PAS  "CONCOPY  $O   qpl $F"  "error P"  "$N.$E"          |
  1057.  
  1058. Quick Pascal issues "status messages" telling what line it is       |
  1059. currently compiling, to the console, just as Turbo Pascal does.     |
  1060. Unfortunately, unlike Turbo Pascal, Quick Pascal does not have a    |
  1061. /Q switch to turn this off.                                         |
  1062.  
  1063. As a result, if you use CONCOPY to redirect the output, you will    |
  1064. get a number of bare carriage returns in the output.  For this      |
  1065. reason, we recommend you use the /W+ mode of QCP when compiling     |
  1066. with Quick Pascal.  When the error file is rewritten by QCP, the    |
  1067. bare carriage returns will be converted to proper line breaks.      |
  1068.  
  1069.  
  1070. QCP 2.08 Documentation                                    Page 22
  1071.  
  1072.  
  1073. This is also the reason for the unusual Unique and Lead-in          |
  1074. strings on the CONCOPY command line above.                          |
  1075.  
  1076.  
  1077. INCOMPATIBLE COMPILERS
  1078. ----------------------
  1079. The following compilers cannot be made to work with QCP's macro 
  1080. generation feature as far as we can tell.  If applicable or 
  1081. known, a reason is given after each.  If you can figure out a way 
  1082. to make one of these work, we'll be glad to add that information 
  1083. to a future version of this DOC file.
  1084.  
  1085. A86 macro assembler, V3.20 (and earlier) by Eric Isaacson           |
  1086.      Error messages do not include line numbers.                    |
  1087. Microsoft Pascal, v3.32 and earlier                                 |
  1088.      Error messages are too inconsistently formatted.               |
  1089. Ryan-McFarland FORTRAN version 2.4
  1090.      Error messages do not include line numbers.  
  1091. Turbo Pascal 3.0 and earlier
  1092.      This compiler is an integrated environment only.
  1093.  
  1094.  
  1095. CONFIGURATION VIA QCP.DAT
  1096. -------------------------
  1097. QCP needs information on the file extensions and compilers you 
  1098. use in order to do its job.  You supply this information by 
  1099. editing the file QCP.DAT to suit your individual circumstances.  
  1100.  
  1101. In addition, various options in the way QCP behaves can be 
  1102. controlled via lines in QCP.DAT.  This includes those mentioned 
  1103. above in the section on command line switches, but also some 
  1104. others that you will normally change only rarely.
  1105.  
  1106. An example QCP.DAT, which contains the same values with which 
  1107. QCP.EXE is shipped, is supplied.  You can begin by editing this 
  1108. file to suit your requirements.
  1109.  
  1110. The file is fairly free-form, you can incorporate comments more 
  1111. or less at will.  The only lines which QCP will try to process 
  1112. are those that begin with a '.' (period) in column 1 and are 
  1113. longer than 5 characters.
  1114.  
  1115.  
  1116. QCP 2.08 Documentation                                    Page 23
  1117.  
  1118.  
  1119. The main content of QCP.DAT is a list of file name extensions, 
  1120. followed by the command line that will be executed for each one, 
  1121. as follows:
  1122.  
  1123.      Ext.    Default Command Line
  1124.      ----    --------------------
  1125.      .asm    masm   $F;  >$O
  1126.      .c      tcc -c $F   >$O
  1127.  
  1128. and so on.
  1129.  
  1130. Note that the format of QCP.DAT was designed to be much the same 
  1131. as that of QCOMP.DAT, from Mike Smedley's program.  If you are 
  1132. currently using QCOMP, you can adapt your current QCOMP.DAT 
  1133. simply by renaming it, and editing all instances of '%s' into 
  1134. '$F'.
  1135.  
  1136. It is legal to have an entry for a "nothing" file extension.  
  1137. Just put a period by itself on a line, followed by at least one 
  1138. space, and the command line to use.  
  1139.  
  1140. Only the first 10 extensions found will be processed.  Any 
  1141. additional ones, or duplicate ones, will be ignored.  A warning 
  1142. message is issued to help you clean up your QCP.DAT.
  1143.  
  1144. The raw command lines may not be longer than 64 characters, 
  1145. though they can become a full 127 characters long when the $ 
  1146. strings are expanded.
  1147.  
  1148. QCP executes a child copy of COMMAND.COM, which is passed the 
  1149. command line to execute.  This means that you can use internal 
  1150. DOS commands, batch files and I/O redirection in invoking your 
  1151. compiler.  COMMAND.COM is found using the 'COMSPEC' environment 
  1152. variable, make sure yours is set correctly.  Putting COMMAND.COM 
  1153. on a RAM disk and setting your COMSPEC variable to point to it 
  1154. considerably speeds operation of QCP and other programs.  See 
  1155. your DOS manual for details.
  1156.  
  1157.  
  1158. QCP 2.08 Documentation                                    Page 24
  1159.  
  1160.  
  1161. SUBSTITUTION STRINGS
  1162. --------------------
  1163. Various sub-strings, in the form of "$c" where c is some 
  1164. character, can be included in compiler command lines, macro key 
  1165. templates and the QMAC command line template (see below), in 
  1166. order to substitute values at run-time.  They can be included in 
  1167. any order.  Some make more sense than others in certain contexts, 
  1168. as noted below:
  1169.  
  1170. $F  -- FULL FILENAME
  1171. --------------------
  1172. Substitutes the full path name of the file passed on the command 
  1173. line to QCP.  This is expanded internally by QCP, so even if you 
  1174. supply a partial path to the file, this will always be the fully 
  1175. qualified path, in all caps.  Note that directory references '.' 
  1176. and '..' will be correctly removed from the path here (QEdit 
  1177. doesn't currently do this as of version 2.08).
  1178.  
  1179. $D  -- DRIVE LETTER
  1180. -------------------
  1181. Drive letter of the file passed.  Just the drive letter, no 
  1182. trailing ':' is included.
  1183.  
  1184. $P  -- PATH (DIRECTORY) OF FILE
  1185. -------------------------------
  1186. Path to the file passed.  This is a fully qualified path, 
  1187. starting at the root, but not including the filename itself.  The 
  1188. leading '\' is included, but no trailing '\' is supplied.  If the 
  1189. file is in the root directory, this string will be the empty 
  1190. string.
  1191.  
  1192. $N  -- NAME OF FILE
  1193. -------------------
  1194. Name of the file.  Just the 8-character name, with no delimiters.
  1195.  
  1196. $E  -- EXTENSION OF FILE
  1197. ------------------------
  1198. Extension of the file.  Just the 3-character extension, with no 
  1199. delimiters.  No '.' is included.  Can be an empty string if there 
  1200. is no extension on the original file name.
  1201.  
  1202. Note: in all cases, '$F' is exactly equivalent to '$D:$P\$N.$E'.   
  1203. Keep in mind that $P and $E can be empty strings, but $N, $D and 
  1204. $F will always contain SOMETHING.
  1205.  
  1206. All of the filename-related parameters are capitalized by QCP, so 
  1207. you need not worry about mixed case if you are examining the 
  1208. parameters in a batch file.  The file passed to QCP is not 
  1209. checked for existence.  
  1210.  
  1211.  
  1212. QCP 2.08 Documentation                                    Page 25
  1213.  
  1214.  
  1215. $1 to $9  -- COMPILER OPTIONS
  1216. -----------------------------
  1217. Where x is a single digit from 1 to 9.  This will expand to 
  1218. command line parameters (if any) that were passed to QCP on the 
  1219. command line, beyond the filename.  Similar to %1 through %9 in 
  1220. DOS Batch files.
  1221.  
  1222. $$  -- SINGLE DOLLAR SIGN
  1223. -------------------------
  1224. Expands to a single $ on the target command line or other string.
  1225.  
  1226. $T  -- TEMP FILE NAME
  1227. ---------------------
  1228. Expands to the name of the temp file to be created by QCP, as 
  1229. input for QMAC.  Defaults to $QCP$.TMP.  After QMAC runs, this 
  1230. file is deleted by QCP.  You can configure it with the "..T" 
  1231. command in QCP.DAT.  It may include a full path specification.
  1232.  
  1233. This file is normally used only on the QMAC command line, and by 
  1234. QCP internally.  
  1235.  
  1236. $O  -- OUTPUT FILE NAME
  1237. -----------------------
  1238. Expands to the name of the output file you want compiler output 
  1239. directed to.  Defaults to ERRORS.LST.  Normally you include ">$O" 
  1240. on the compiler command line to insure this file gets created.  
  1241. You can change this file name with the "/O" command line switch 
  1242. or the "..O" command in QCP.DAT.  It may include a full path 
  1243. specification.  See /O above for details.
  1244.  
  1245. $M  -- MACRO FILE NAME
  1246. ----------------------
  1247. Expands to the name of the QEdit binary macro file created by 
  1248. QMAC or QCP.  Defaults to ERRORS.MAC.  You can change this file 
  1249. name with the "/M" command line switch or the "..M" command in 
  1250. QCP.DAT.  It may include a full path specification.  See /M above 
  1251. for details.
  1252.  
  1253. $K  -- MACRO KEY NUMBER
  1254. -----------------------
  1255. Expands to the number of the macro key currently being generated.  
  1256. This ranges from '1' through '0' if your macro key template 
  1257. starts with just '@' (the default).  If you macro key template 
  1258. starts with anything else, this ranges from '1' to '12', so you 
  1259. can find errors with your function keys (or Control-function, or 
  1260. Alt-function, etc.).  
  1261.  
  1262. This is ONLY used inside the macro key template(s), and will 
  1263. expand to nothing if used anywhere else.
  1264.  
  1265.  
  1266. QCP 2.08 Documentation                                    Page 26
  1267.  
  1268.  
  1269. $S  -- SOURCE LINE NUMBER
  1270. -------------------------
  1271. Expands to the number of the line in your source code that 
  1272. generated (this) error.  Can be any valid number.  This is also 
  1273. only used inside macro key template(s).
  1274.  
  1275. $C  -- SOURCE COLUMN NUMBER                                         |
  1276. ---------------------------                                         |
  1277. Expands to the number of the column (on the line $S) in your        |
  1278. source code where the error occurred.  Can be any valid             |
  1279. number, less than 1000.  If no column number was found in the       |
  1280. error message, this will be the empty string.  This is also only    |
  1281. used inside macro key template(s).                                  |
  1282.  
  1283. $R  -- RESULT LINE NUMBER
  1284. -------------------------
  1285. Expands to the number of the line in the error output ($O) file 
  1286. that contained this error message.  Can be any valid number.  
  1287. This is also only used inside macro key template(s).
  1288.  
  1289. The above three strings, $S, $C and $R, are used to position the 
  1290. cursor in both windows on the source line, and the error message, 
  1291. when back in QEdit.  See the QEdit macro template string for an 
  1292. example of their use.
  1293.  
  1294. $I  -- INSERTED CHARACTER                                           |
  1295. -------------------------                                           |
  1296. Expands to a single character to be inserted immediately to the     |
  1297. left of the source line and column numbers ($S and $C) where they   |
  1298. appear in the error output.  Normally this is CHR( 255 ), which     |
  1299. is a blank character.  You can set this by the /I command line      |
  1300. option or the ..I command in QCP.DAT.                               |
  1301.  
  1302. This is usually only used in the next error and previous error      |
  1303. macro templates, but in fact could be used anywhere in the          |
  1304. program.                                                            |
  1305.  
  1306. $U  -- UNIQUE STRING                                                |
  1307. --------------------                                                |
  1308. Expands to the unique string being used to find error messages      |
  1309. with the currently invoked compiler.                                |
  1310.  
  1311.  
  1312. QCP 2.08 Documentation                                    Page 27
  1313.  
  1314.  
  1315. $L  -- LEAD-IN STRING                                               |
  1316. ---------------------                                               |
  1317. Expands to the lead-in string being used with the currently         |
  1318. invoked compiler.                                                   |
  1319.  
  1320. Both the Unique and Lead-in strings default to the name (plus       |
  1321. extension if present) of the source file.  Since they can contain   |
  1322. $X expansion characters themselves, there is a danger of a          |
  1323. circular reference here.  The program takes this into account,      |
  1324. but be sure you do not erroneously create one.                      |
  1325.  
  1326. They are normally used in the next error and previous error macro   |
  1327. templates, to find error lines in the error output file.  They      |
  1328. are only valid during macro creation.                               |
  1329.  
  1330. Note that if any character other than those listed above appears 
  1331. after a $ in any string, both the $ and the character will be 
  1332. "eaten" by QCP and will not appear in the resulting string.  
  1333. (This is for upward compatibility with possible future extensions 
  1334. to the above list).  If you need to put a $ in your compiler 
  1335. command line or macro key template, use a double $ as indicated 
  1336. above.  
  1337.  
  1338.  
  1339. QCP CONFIGURATION COMMANDS
  1340. --------------------------
  1341. Some configuration commands can also be included in QCP.DAT to 
  1342. customize QCP in special ways.  They follow the same general form 
  1343. as file extension lines:  a line beginning with a period that is 
  1344. longer than 5 chars.  However, there is a second period to 
  1345. distinguish these from file name extensions, followed by one 
  1346. character to specify the operation, a space, and some string 
  1347. argument.
  1348.  
  1349. You need not supply all or any of these commands in QCP.DAT, you 
  1350. can mix and match as you see fit.  Any that are not included will 
  1351. default to the previously installed values in QCP.EXE.  If more 
  1352. than one of the same directive occurs in QCP.DAT, the last one 
  1353. takes precendence.
  1354.  
  1355.  ..T filename  -- TEMP FILE NAME
  1356. --------------------------------
  1357. Sets the name of the temporary file written by QCP and read by 
  1358. QMAC to create macros.  Defaults to $QCP$.TMP.  Corresponds to 
  1359. the "$T" substitution string.
  1360.  
  1361.  
  1362. QCP 2.08 Documentation                                    Page 28
  1363.  
  1364.  
  1365.  ..O filename  -- OUTPUT FILE NAME
  1366. ----------------------------------
  1367. Sets the name of the output file to which compiler output is 
  1368. redirected.  Defaults to ERRORS.LST.  Corresponds to the "$O" 
  1369. substitution string.  It can also be set by the /Ofilename 
  1370. commmand line switch, which overrides the value set here.
  1371.  
  1372.  ..M filename  -- MACRO FILE NAME
  1373. ---------------------------------
  1374. Sets the name of the macro file to be generated by QMAC from the 
  1375. key definitions created by QCP.  Defaults to ERRORS.MAC.  
  1376. Corresponds to the "$M" substitution string.  It can also be set 
  1377. by the /Mfilename commmand line switch, which overrides the value 
  1378. set here.
  1379.  
  1380. For all three of the above files, note:  Your temp directory, if 
  1381. defined via the environment variable TMP, will be automatically 
  1382. pre-pended to this file name if it does not already contain a 
  1383. drive or path.  This is done at RUN-TIME.
  1384.  
  1385. If this would cause the file not to match the name being used in 
  1386. the QEdit macro key, then make sure that the file name contains a 
  1387. drive or path to suppress use of TMP.  You can use ".\" to put 
  1388. these file in the current directory, the default.
  1389.  
  1390.  ..C commandline  -- QMAC COMMAND LINE
  1391. --------------------------------------
  1392. Sets a template command line for invocation of QMAC from QCP.  
  1393. Defaults to "QMAC $M $T B N".  Like compiler command lines, this 
  1394. command line is passed to a child copy of COMMAND.COM, so calling 
  1395. batch files and I/O redirection is possible here.  
  1396.  
  1397. One possible alteration to this command line would be to take       |
  1398. advantage of the "append" capability that QMAC has.   With QEdit    |
  1399. 2.08, it is now very easy to load a set of QMAC-style loadable      |
  1400. macros, every time you use QEdit, by using the /L command line      |
  1401. switch.  Since QMAC macros can be considerably longer and more      |
  1402. numerous than the ones permanently installed into QEdit by          |
  1403. QCONFIG, this has some advantages.                                  |
  1404.  
  1405. However, when you invoke QCP, and load the macro file it creates,   |
  1406. your previously loaded macros are thrown away.  You could           |
  1407. overcome this by using QMAC's append mode.                          |
  1408.  
  1409. You could change the ..C command line to read:                      |
  1410.  
  1411.           QM $M $T                                                  |
  1412.  
  1413.  
  1414. QCP 2.08 Documentation                                    Page 29
  1415.  
  1416.  
  1417. And set up a batch file, QM.BAT, that contained the following:      |
  1418.  
  1419.           ECHO OFF                                                  |
  1420.           COPY MYMACROS.MAC %1                                      |
  1421.           QMAC %1 %2 B Y                                            |
  1422.  
  1423. This would put a set of "default" macros, from MYMACROS.MAC, into   |
  1424. the file ERRORS.MAC.  Then, it invokes QMAC, causing the macros     |
  1425. created by QCP to appended to your default macros in ERRORS.MAC.    |
  1426. When you return from the compile, both your default macros, and     |
  1427. any macros created by QCP, are reloaded into QEdit.                 |
  1428.  
  1429.  ..Q ON
  1430.  ..Q OFF
  1431.    or
  1432.  ..Q macroline  -- QEDIT MACRO TEMPLATE
  1433. ---------------------------------------
  1434. The form with 'ON' or 'OFF' simply activates or deactivates the 
  1435. creation of QEdit macro keys by QCP.  If you do not wish to use 
  1436. this feature, you can specify "..Q OFF", and no macros will ever 
  1437. be created.
  1438.  
  1439. Specifying ON or OFF does not change the template macro 
  1440. definition.  If you turn macro creation OFF, and later turn it 
  1441. back ON, your original macro template will still be intact.
  1442.  
  1443. If a string other than ON or OFF is specified after "..Q", it 
  1444. sets the template QEdit macro definition to be generated.  When 
  1445. you set a template this way, macro generation is automatically 
  1446. turned ON as well.  The default is:
  1447.  
  1448.      @$K MacroBegin                                                 |
  1449.          NextWindow BegLine GotoLine "$R" Return MakeCtrOfScreen    |
  1450.          PrevWindow BegLine GotoLine "$S" Return                    |
  1451.          GotoColumn "$C" Return MakeCtrOfScreen                     |
  1452.  
  1453. (Wrapped here for readability).  This works in concert with the 
  1454. default invocation macro (Control-F9) supplied in QCONFIG.QCP, to 
  1455. scroll both windows (source file, and error listing) to each 
  1456. error message in synch with each other.
  1457.  
  1458. The macro definition can be one or two lines long.  If it is two    |
  1459. lines long, simply end the first line with a "&" (ampersand) and    |
  1460. continue the macro onto the second line, just as you do with        |
  1461. QMAC.                                                               |
  1462.  
  1463.  
  1464. QCP 2.08 Documentation                                    Page 30
  1465.  
  1466.  
  1467. The default generates a series of macros on ALT-1 through ALT-0 
  1468. across the top of your keyboard.  You could easily change this to 
  1469. some other series of keys by changing the first few characters of 
  1470. the macro template.  Sensible values are:
  1471.  
  1472.           Value                    Keys
  1473.           ----------------------   -------------------------
  1474.           @$K   MacroBegin....     Alt-1 to Alt-0   (Default)
  1475.           f$K   MacroBegin....     F1 to F12
  1476.           #f$K  MacroBegin....     Shift-F1 to Shift-F12
  1477.           ^f$K  MacroBegin....     Control-F1 to Control-F12
  1478.           @f$K  MacroBegin....     Alt-F1 to Alt-F12
  1479.  
  1480. You will want to pick a series of keys that have no current 
  1481. definitions in your QCONFIG.DAT, otherwise those definitions will 
  1482. become inaccessible when the error macro file is loaded by QEdit.
  1483.  
  1484.  ..1 through ..9  -- SPECIAL FILE "EXTENSIONS"
  1485. ----------------------------------------------
  1486. These work exactly like file extension definitions.  These 
  1487. correspond to the "/1" through "/9" command line options on QCP, 
  1488. and allow you to override the default compiler or program that 
  1489. would be invoked based on the target files file extension.  
  1490. (NOTE:  These have nothing at all to do with the "$1" through 
  1491. "$9" substitution strings!).  
  1492.  
  1493. A sample use of this is supplied in QCP.DAT:
  1494.  
  1495.           ..1     grep -o+n+r+ $1 $2 $3 $4 $5 $6 $7 $8 $9  $F >$O
  1496.  
  1497. This example is intended to work with Borland's Turbo Grep, which 
  1498. is shipped with most of their current language products.  The 
  1499. command line switches may be different with other Grep's.  Just 
  1500. insure that the Grep you use produces Unix-style output with line 
  1501. numbers.
  1502.  
  1503. This allows you to invoke QCP with 
  1504.  
  1505.           QCP /1 filename reg_expression_string
  1506.  
  1507. and regardless of the extension of the file used, GREP will be 
  1508. invoked to search for the specified regular expression.  The 
  1509. beauty of this is that QCP can read the output generated by GREP, 
  1510. convert it to macro keys, and allow you to jump to each line GREP 
  1511. found using QEdit.  The Control-F8 function key in QCONFIG.QCP is 
  1512. set up to do this for you.
  1513.  
  1514.  
  1515. QCP 2.08 Documentation                                    Page 31
  1516.  
  1517.  
  1518. Another sample use of this replaces the function of QMAKE by 
  1519. Jerry Houston:
  1520.  
  1521.           ..2  make $N
  1522.  
  1523. you can replace "make" with the path and/or name of your 
  1524. favorite make utility.  The assumption here is that for each 
  1525. source code file you have, you also have a MAKE file, with no 
  1526. extension, containing the project definition.  By using $N, we 
  1527. pass just the root file name to make via QCP.  The invocation of 
  1528. this would look like: "QCP /2 filename".  See QCONFIG.QCP.
  1529.  
  1530.  ..B ON                                                             |
  1531.  ..B OFF                                                            |
  1532.    or                                                               |
  1533.  ..B macroline -- BATCH MODE STARTUP MACRO TEMPLATE                 |
  1534. ---------------------------------------------------                 |
  1535. This operation works just like the ..Q macro template--it turns     |
  1536. batch mode macro creation on or off, and/or sets the QEdit macro    |
  1537. template that will be used to create the startup macro.  See also   |
  1538. the /B switch above.                                                |
  1539.  
  1540. The default for the ..B macro template, which is designed to        |
  1541. work with the supplied COMPILE.BAT, is as follows:                  |
  1542.  
  1543.      250  MacroBegin OneWindow EditFile "$F" Return                 |
  1544.           HorizontalWindow EditFile "$O" Return                     |
  1545.           BegLine GotoLine "$R" Return MakeCtrOfScreen              |
  1546.           PrevWindow BegLine GotoLine "$S" Return                   |
  1547.           GotoColumn "$C" Return MakeCtrOfScreen                    |
  1548.  
  1549. (Wrapped here for readibility).  This template may continue onto    |
  1550. a second line in QCP.DAT, by ending the first line with "&".        |
  1551.  
  1552. The purpose of batch mode and the startup macro is to use QCP       |
  1553. from outside QEdit, and then only invoke QEdit AFTER compiling      |
  1554. the source file.    A sample batch file which takes advantage of    |
  1555. this is supplied in COMPILE.BAT.                                    |
  1556.  
  1557. The advantage to Batch mode is that you can use it with compilers   |
  1558. that are extraordinarily memory-hungry, and therefore cannot be     |
  1559. run while inside of QEdit.                                          |
  1560.  
  1561.  
  1562. QCP 2.08 Documentation                                    Page 32
  1563.  
  1564.  
  1565. Batch mode could also be used to implement a "smart make"           |
  1566. procedure, in which the make process would stop and enter QEdit     |
  1567. any time an error occurred.  Merely by fixing and compiling the     |
  1568. file in question while in QEdit, and then exiting, the make         |
  1569. process would resume normally.  You could use your normal           |
  1570. command-line make utility to implement this, by having it invoke    |
  1571. something similar to COMPILE.BAT for each target that has to be     |
  1572. created.                                                            |
  1573.  
  1574. When macros are created, QCP exits with the DOS ERRORLEVEL set to   |
  1575. one (1).  If no errors were found (and therefore no macros          |
  1576. created) the ERRORLEVEL is set to zero (0).  This can be used in    |
  1577. conjunction with batch mode to decide whether to invoke QEdit.      |
  1578. See COMPILE.BAT for an example.  (If some sort of error occurs,     |
  1579. such as a missing file, or out of memory, QCP exits with the        |
  1580. ERRORLEVEL set to 128 or greater).                                  |
  1581.  
  1582.  ..G ON                                                             |
  1583.    or                                                               |
  1584.  ..G OFF -- DEFAULT VALUE FOR GUESS EXTENSION                       |
  1585. ---------------------------------------------                       |
  1586. This command lets you set the default value for the /G command      |
  1587. line switch.  See /G for details.                                   |
  1588.  
  1589.  ..W ON                                                             |
  1590.    or                                                               |
  1591.  ..W OFF -- DEFAULT VALUE FOR REWRITE ERROR FILE                    |
  1592. ------------------------------------------------                    |
  1593. This command lets you set the default value for the /W command      |
  1594. line switch.  See /W for details.                                   |
  1595.  
  1596.  ..I CHAR -- DEFAULT INSERTION CHARACTER                            |
  1597. ----------------------------------------                            |
  1598. This command lets you set the "insertion" character used in /W+     |
  1599. mode.  See /I for details.                                          |
  1600.  
  1601. The insertion character may be numeric or ASCII when specified      |
  1602. here, and it must be separated from the ..I by at least one         |
  1603. space.                                                              |
  1604.  
  1605.  
  1606. QCP 2.08 Documentation                                    Page 33
  1607.  
  1608.  
  1609.  ..N macroline                                                      |
  1610.     and                                                             |
  1611.  ..P macroline -- NEXT AND PREVIOUS ERROR MACRO TEMPLATES           |
  1612. ---------------------------------------------------------           |
  1613. These two templates allow you to set up generic "go to next         |
  1614. error" and "go to previous error" macros for use with QCP.  This    |
  1615. is particularly useful with compilers that might generate more      |
  1616. than ten or twelve error messages per run, and with external GREP   |
  1617. or other utilities.                                                 |
  1618.  
  1619. The error output file has to be rewritten by QCP (/W+ must be       |
  1620. active) for these macros to be written to the macro file.  The      |
  1621. macros take advantage of the insertion character added to the       |
  1622. compiler output by QCP, to find the row and column numbers          |
  1623. without any special knowledge of the format of the error            |
  1624. messages  (see /I for info on the insertion character).             |
  1625.  
  1626. The default for the next error macro is as follows:                 |
  1627.  
  1628.      #f10 MacroBegin NextWindow EndLine                             |
  1629.           Find "$U" Return "I" Return BegLine                       |
  1630.           Find "$I" Return "I" Return                               |
  1631.           CursorRight MarkWord Copy                                 |
  1632.           PrevWindow GotoLine Paste Return                          |
  1633.           NextWindow RepeatFind CursorRight MarkWord Copy           |
  1634.           BegLine MakeCtrOfScreen                                   |
  1635.           PrevWindow GotoColumn Paste Return MakeCtrOfScreen        |
  1636.  
  1637. The default for the previous error macro is as follows:             |
  1638.     
  1639.      #f9  MacroBegin NextWindow BegLine                             |
  1640.           Find "$U" Return "IB" Return BegLine                      |
  1641.           Find "$I" Return "I" Return                               |
  1642.           CursorRight MarkWord Copy                                 |
  1643.           PrevWindow GotoLine Paste Return                          |
  1644.           NextWindow RepeatFind CursorRight MarkWord Copy           |
  1645.           BegLine MakeCtrOfScreen                                   |
  1646.           PrevWindow GotoColumn Paste Return MakeCtrOfScreen        |
  1647.  
  1648. Just as with the other macro templates, these can continue onto a   |
  1649. second line in QCP.DAT by ending the first line with "&".  In       |
  1650. fact, the definitions presented here are two lines long in the      |
  1651. supplied QCP.DAT.                                                   |
  1652.  
  1653.  
  1654. QCP 2.08 Documentation                                    Page 34
  1655.  
  1656.  
  1657. Here are some summaries of the various switches, parameters, etc. 
  1658. that QCP understands:
  1659.  
  1660.  
  1661. SUMMARY OF QCP COMMAND LINE SWITCHES
  1662. ------------------------------------
  1663.  
  1664. SWITCH      MEANING                   TYPICAL VALUE
  1665. ----------  ------------------------  --------------------------
  1666.  
  1667.  /? or /H   show Help screen
  1668.  /B         Batch mode                /B+
  1669.  /C         Configure QCP             /C or /CE:\MYDIR\MYQCP.EXE
  1670.  /I         set Insertion character   /I255 
  1671.  /G         set Guess extension mode  /G+
  1672.  /M         set Macro file name       /M.\errors.mac
  1673.  /O         set Output file name      /O.\errors.lst
  1674.  /P         set Pause after error     /P+
  1675.  /Q         set QEdit macro creation  /Q+
  1676.  /R         Read config from QCP.DAT  /R or /RE:\MYDIR\MYQCP.DAT
  1677.  /S         See defaults              /S
  1678.  /W         set reWrite error file    /W+
  1679.  
  1680.  
  1681. SUMMARY OF SUBSTITUTION STRINGS
  1682. -------------------------------
  1683.  
  1684. STRING      MEANING                   TYPICAL VALUE
  1685. ----------  ------------------------  --------------------------
  1686.  
  1687.   $$        single dollar sign        "$"
  1688.   $1 to $9  Compiler options          varies with compiler
  1689.   $C        source Column number      "1"
  1690.   $D        Drive letter              "C"
  1691.   $E        Extension of file         "PAS"
  1692.   $F        Full filename             "C:\LANG\TURBO\MYFILE.PAS"
  1693.   $I        Inserted character        CHR( 255 )
  1694.   $K        macro Key number          "1" through "0"
  1695.   $L        Lead-in string            "MYFILE.PAS"
  1696.   $M        Macro file name           ".\ERRORS.MAC"
  1697.   $N        Name of file              "MYFILE"
  1698.   $O        Output file name          ".\ERRORS.LST"
  1699.   $P        Path (directory) of file  "\LANG\TURBO"
  1700.   $R        Result line number        "3"
  1701.   $S        Source line number        "124"
  1702.   $T        Temp file name            "$QCP$.TMP"
  1703.   $U        Unique string             "MYFILE.PAS"
  1704.  
  1705.  
  1706. QCP 2.08 Documentation                                    Page 35
  1707.  
  1708.  
  1709. SUMMARY OF QCP.DAT CONFIGURATION COMMANDS
  1710. -----------------------------------------
  1711.  
  1712. STRING      MEANING                   TYPICAL VALUE
  1713. ----------  -----------------------   ---------------------------
  1714.  
  1715.  ..1 - ..9  Special "extensions"      command line to execute
  1716.  ..B        Batch mode macro          "ON", "OFF", or valid macro
  1717.  ..C        QMac Command line         "QMAC $M $T B N"
  1718.  ..G        Guess extension           "ON" or "OFF"
  1719.  ..I        Insertion character       "255"
  1720.  ..M        Macro file name           ".\ERRORS.MAC"
  1721.  ..N        Next error macro          a valid macro
  1722.  ..O        Output file name          ".\ERRORS.LST"
  1723.  ..P        Previous error macro      a valid macro
  1724.  ..Q        QEdit macro template      "ON", "OFF", or valid macro
  1725.  ..T        Temp file name            "$QCP$.TMP"
  1726.  ..W        reWrite error file        "ON" or "OFF"
  1727.  
  1728.  
  1729. ERROR MESSAGES
  1730. --------------
  1731. Various error conditions can occur when QCP operates, in which 
  1732. case it will issue the following error messages.  Each of these 
  1733. will be preceeded by "QCP Error:" to remind you that an error 
  1734. condition has occurred, and followed by a console beep.
  1735.  
  1736.           QCP.DAT cannot be found
  1737.                or
  1738.           QCP.EXE cannot be found
  1739.  
  1740. The data file or executable file could not be found in the 
  1741. current directory, the directory the EXE came from, nor anywhere 
  1742. along the path.  These can occur as the result of using the /R or 
  1743. /C command line switches.
  1744.  
  1745.           d:\dir\QCP.EXE is corrupted or wrong version
  1746.  
  1747. You may have more than one QCP.EXE on your disk, or more than one 
  1748. version of QCP present.  If that is not true, your copy of QCP 
  1749. may have been damaged due to disk error.  Get a fresh copy from 
  1750. your backup.
  1751.           
  1752.           DOS error on execution of target command line
  1753.  
  1754. Some sort of DOS error (other than out of memory) occurred on 
  1755. trying to load the child COMMAND.COM.  This would be very rare, 
  1756. but might be caused by an invalid COMSPEC environment variable, 
  1757. or an invalid copy of COMMAND.COM.
  1758.  
  1759.  
  1760. QCP 2.08 Documentation                                    Page 36
  1761.  
  1762.  
  1763.           Error reading d:\dir\QCP.DAT
  1764.  
  1765. This means some sort of DOS error occurred while reading the data 
  1766. file, either a bad sector, or premature EOF or something.
  1767.  
  1768.           File name missing on /O or /M switch
  1769.  
  1770. You specified /O or /M on the QCP command line without putting a 
  1771. filename immediately behind the switch (no spaces).
  1772.  
  1773.           File name missing
  1774.  
  1775. After parsing out the various switches, QCP could not find an 
  1776. actual file name to pass to your compiler.
  1777.  
  1778.           I/O problem while attempting to write d:\dir\QCP.EXE
  1779.  
  1780. Some sort of DOS error occurred while rewriting the defaults in 
  1781. QCP.EXE.  This will only occur when you specify the /C command 
  1782. line option.  Your copy of QCP.EXE may have been damaged by this, 
  1783. get a new copy off your backup disk.
  1784.  
  1785.           Improper macro continuation line                          |
  1786.  
  1787. When specifying multi-line QEdit macros in QCP.DAT, by putting      |
  1788. "&" on the end of the line, QCP does some rudimentary checking.     |
  1789. If the continuation line begins with a period ("."), it will        |
  1790. issue this message.  It could also happen if the end of QCP.DAT     |
  1791. was reached before finishing the macro.  This can occur while       |
  1792. reading any of the macro template commands in QCP.DAT.              |
  1793.  
  1794.           Insertion character missing on /I switch                  |
  1795.  
  1796. There was no text immediately behind the /I switch to use as an     |
  1797. insertion character.  You must follow the switch IMMEDIATELY with   |
  1798. the character itself, or its decimal ASCII code, no space in        |
  1799. between.                                                            |
  1800.  
  1801.           No extensions found in d:\dir\QCP.DAT
  1802.  
  1803. No lines in the specified copy of QCP.DAT began with a '.', so 
  1804. QCP could not find any extensions to parse.
  1805.  
  1806.           No matching command line found for extension "xxx"
  1807.  
  1808. There was no extension/command line definition in QCP.DAT that 
  1809. matched the extension of the file given on the command line (i.e. 
  1810. "xxx").  If you specified /1 through /9 on the command line, then 
  1811. there was no matching ..1 through ..9 command in your 
  1812. configuration.
  1813.  
  1814.  
  1815. QCP 2.08 Documentation                                    Page 37
  1816.  
  1817.  
  1818.  
  1819.           Not enough memory to execute command line
  1820.  
  1821. There was not enough memory to load a child copy of COMMAND.COM 
  1822. and execute your target command line.
  1823.  
  1824.           Unrecognized command switch "x"
  1825.  
  1826. You specified a "/x" switch on the command line that QCP did not 
  1827. recognize.  Check the documentation for valid switches.
  1828.  
  1829.  
  1830. Only one of these errors will be displayed during any single run 
  1831. of QCP. If any of these error messages were displayed, the DOS 
  1832. ERRORLEVEL value will be set to 128 or higher when QCP exits.  
  1833.  
  1834.  
  1835. INFORMATIVE & WARNING MESSAGES
  1836. ------------------------------
  1837. QCP will also issue various informative messages during 
  1838. operation.  These will be preceded by "QCP:" for messages, or 
  1839. "QCP Warning:" for warnings.  No beep will sound, nor will the 
  1840. ERRORLEVEL be set in these cases, as these are non-fatal 
  1841. conditions.  The "press any key to continue" prompt, if enabled, 
  1842. will not appear after these messages.
  1843.  
  1844.           Duplicate definition for "xxx" ignored
  1845.  
  1846. There is more than one definition line for extension "xxx" in 
  1847. your QCP.DAT.  Edit your QCP.DAT so that there is only one.  If 
  1848. you need to temporarily disable one definition to use another, 
  1849. edit the line so that there is no "." in column 1, and QCP will 
  1850. ignore that line.
  1851.  
  1852.           Extension table full, extension "xxx" ignored
  1853.  
  1854. You have more than 10 extension/command line definitions in your 
  1855. QCP.DAT, and QCP ran out of table space.  "xxx" will be the 11th 
  1856. or greater extension defined in the file.  Edit your QCP.DAT so 
  1857. that there are 10 or less definitions.
  1858.  
  1859.           Macro file created for QEdit                              |
  1860.  
  1861. This message appears after QCP is done running QMAC to create a     |
  1862. loadable binary macro file for QEdit.                               |
  1863.  
  1864.  
  1865. QCP 2.08 Documentation                                    Page 38
  1866.  
  1867.  
  1868.           New defaults written to d:\dir\QCP.EXE
  1869.  
  1870. This informs you that QCP has successfully re-written its 
  1871. defaults as requested by /C, and where QCP.EXE was found.
  1872.  
  1873.           Reading configuration from d:\dir\QCP.DAT
  1874.  
  1875. This message just informs you that a configuration is being read 
  1876. to satisfy a /R or /C request, and it tells you where QCP.DAT was 
  1877. found on the disk.
  1878.  
  1879.           Unknown configuration command "..x" ignored               |
  1880.  
  1881. QCP found a command named "..x" in your QCP.DAT, and did not        |
  1882. recognize it.  See elsewhere in this documentation for the list     |
  1883. of supported configuration commands.                                |
  1884.  
  1885.           Unmatched " in input line of d:\dir\QCP.DAT
  1886.  
  1887. QCP was trying to read in a command line followed by a unique 
  1888. string and/or a lead-in string, and could not find a matching 
  1889. quote character.  Since you can mix and match single and double 
  1890. quotes, double check your data file to be sure you paired them up 
  1891. correctly.
  1892.  
  1893.  
  1894. ACKNOWLEDGEMENTS & CONTACTS
  1895. ---------------------------
  1896. Source code to QCP is no longer available.
  1897.  
  1898. Special thanks to Tony Tortorelli, Randy Wallin, Gary Speegle, 
  1899. David Chaika, Howard Kapustein and Sammy Mitchell for help in 
  1900. tracking down particular compiler command lines that would work 
  1901. with QCP.  Also thanks to Mike Smedley and Jerry Houston for some 
  1902. great ideas on which QCP is based.
  1903.  
  1904.  
  1905. QCP 2.08 Documentation                                    Page 39
  1906.  
  1907.  
  1908. If you have any questions or suggestions, please contact:
  1909.  
  1910. SemWare
  1911. 4343 Shallowford Road
  1912. Suite C-3
  1913. Marietta, GA  30062-5003
  1914.  
  1915. Voice Phone: (404) 641-9002   9 a.m to 5 p.m. E.T., Mon-Fri.
  1916. BBS Phone:   (404) 641-8968,  2400 bps
  1917.  
  1918.  
  1919. REVISION HISTORY
  1920. ----------------
  1921. Version 1.0 - 7-Feb-1989 - Initial release.
  1922.  
  1923. Version 2.0 - 15-Mar-1989 - Substantial revision.
  1924.               Added internal defaults.  
  1925.               Added /R, /H, /? and /S command line switches.
  1926.               Added self-configuration /C option.
  1927.               Added construction of QMAC macros from error output.
  1928.               Added support for environment variable 'TMP'.
  1929.               Additional error checking and status messages.
  1930.               Added "special extensions" for special-purpose macros
  1931.               Added /M and /O cmd line options to make the 
  1932.                 invocation macro more self-contained.
  1933.               Added /Q, made boolean switches more consistent.
  1934.               Documentation file significantly rewritten.
  1935.  
  1936. Version 2.08 - 17-Nov-1989 - Supports QEdit 2.08.                   |
  1937.               Detects column number along with line number.         |
  1938.               Allows generic "next" and "previous" macros.          |
  1939.               Allows compilers to be run outside of QEdit, with     |
  1940.                 the editor being invoked via an autoexecute macro.  |
  1941.               Pause after error messages.                           |
  1942.               QEdit macros that QCP writes can now be two lines.    |
  1943.               Miscellaneous improvements.                           |
  1944.  
  1945.                               *** END ***
  1946.  
  1947.